home *** CD-ROM | disk | FTP | other *** search
/ Especial Multimedia / Especial Multimedia.iso / Multimed / Herra / SLANG10.ZIP / GRAF.VEC < prev    next >
Text File  |  1997-09-14  |  10KB  |  274 lines

  1. addzoom(1,1)
  2. zoom(1,1)
  3. colorset =0
  4.  
  5. PLAY("colors.vec")
  6.  
  7. rotate(0, 0, 0)
  8. style(SOLID_FILL, BLACK)
  9. fill(1)
  10. rectangle(0, 0, 1000,1000)
  11. shifts[20]; ' We suppose to use this array for shifts with bar grafs
  12.  
  13. xar[5];
  14. yar[5];
  15. dar[5];
  16. tar[6];
  17. for i = 1 to 5
  18.     xar[i] = i
  19.     yar[i] = i^2 - 10
  20.     dar[i] = i^2 / 2
  21.     tar[i] = lg(i) * 200                    ' Tick, Manual
  22. next
  23.  
  24. tar[6] = lg(6) * 200
  25.  
  26. xd[10];  ' Deviations
  27. yd[10];
  28. for i = 1 to 10
  29.     xd[i] = sin(20 * i)
  30.     yd[i] = 3 + 3 * cos(10 * i^2)
  31. next
  32.  
  33. grafclip(30, 10, 200, 200)                  ' Set area on screen
  34.  
  35. marker_size(8)     ' Do it before call to calc_scale in the case of bar graf
  36. '  Given: Array of REAL ............................ xar
  37. '       Axe (0 - X, 1 - Y) ...................... axe
  38. '       Reset or not previous settings .......... is_first
  39. '       Justification method .................... int num_flag
  40. 'is_first indicates, is it necessary to use previous scale PLUS new data,
  41. '    or only new data.
  42. 'num_flag could be -1, 0 and 1. -1 is used for bar graphs to resize axe.
  43. '    It is necessary because few bars use additional space - and will not
  44. '    fit on graphics otherwise.
  45. '    0 does not produce any action.
  46. '    1 recalculate axe to produce nice-looking labels, Remember that call to
  47. '    set_axe() will automatically presume that axes are "nice-looking",
  48. '    so you MUST call set_axe() with -1 setting or not to use auto labels.
  49. calc_scale(xar, 0, 1, -1, xd)
  50. calc_scale(dar, 1, 1, -1)                   ' y-scale, first, resize
  51. calc_scale(yar, 1, 0, -1, yd)               ' y-scale, not first, resize
  52. calc_scale(yar, 1, 0, 1)            ' and fit to nice-looking scale
  53.  
  54. color(LIGHTRED) : style(SOLID_FILL, CYAN) : fill(1)
  55. 'which, text dir, tick no (-1 for auto), s_tick no<,tick_ar, s_tick_arr>
  56. 'if auto (tick_no == -1) then number of sub ticks = s_tick_no * tick no
  57. 'in this case tick_no will be 5, sub_tick_no 25
  58. 'Manual ticks setup for X:
  59. set_axe(1, 1, -1, 5, tar, tar, "One", "Two", "Three", "Four", "Five", "Six")
  60. 'Auto setup for Y:
  61. set_axe(2, 0, -1, 2)
  62. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  63. axes(YELLOW, LIGHTBLUE, 0, GREEN, 3, 1, 1 + 2) 'axes color, legends color, grid style,
  64.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  65. color(GREEN) : style(LINE_FILL, LIGHTCYAN) : fill(1)
  66. cross()                                     ' Draw beginning of axes (0,0)
  67. setline(3, 0)
  68. PLOT(xar, dar, 4, 1, shifts)                ' Plot second dataset
  69. color(CYAN) : style(CROSS_FILL, YELLOW)
  70. PLOT(xar, yar, 4, 1, shifts)                ' Plot second dataset
  71. marker_size(4)
  72. color(LIGHTRED) : style(SLASH_FILL, LIGHTGRAY)
  73. setline(1, 0)
  74.  
  75. PLOT(xar, dar, 2, 1, shifts, yd, xd)            ' Plot data
  76. marker_size(8)
  77. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  78. for i = 1 to 20
  79.     shifts[i] = 0
  80. next
  81.  
  82. for i = 1 to 5
  83.     yar[i] = i^2 - 10
  84.     dar[i] = i^2 / 2 - 5
  85. next
  86.  
  87. grafclip(230, 20, 380, 210)                  ' Rectangle on screen
  88. calc_scale(xar, 0, 1, 0)
  89. calc_scale(dar, 1, 1, -1)                   ' y-scale, first, resize
  90. calc_scale(yar, 1, 0, -1)                   ' y-scale, not first, resize
  91. calc_scale(yar, 1, 0, 1)
  92. calc_scale(xar, 0, 0, 1)
  93.  
  94. set_axe(1, 0, -1, 2)
  95. set_axe(2, 0, -1, 2)
  96. set_axe(4, 0, -1, 5)
  97. set_axe(8, 0, -1, 2)
  98. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  99. axes(YELLOW, LIGHTRED, 0, LIGHTGRAY, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  100.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  101. color(LIGHTCYAN) : style(LINE_FILL, CYAN)
  102. cross()                                     ' Draw beginning of axes (0,0)
  103. PLOT(xar, yar, 5, 1, shifts)                      ' Plot dataset
  104. color(DARKGRAY) : style(SLASH_FILL, GREEN)
  105. PLOT(xar, dar, 5, 1, shifts)                      ' Plot second dataset
  106. for i = 1 to 20
  107.     shifts[i] = 0
  108. next
  109. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  110. rar[100];
  111. sar[100];
  112. for i = 1 to 100
  113.     rar[i] = i
  114.     sar[i] = sin(3.6 * i)
  115. next
  116. grafclip(420, 20, 600, 210)                  ' Clip rectangle on screen
  117. grafscale(0, -1, 100, 2)                 'Manual scale ajustment
  118. 'calc_scale(rar, 0, 0, 1)                 ' x-scale, not first, resize
  119. 'calc_scale(sar, 1, 0, 1)                 ' y-scale, not first, no resize
  120. 'calc_scale(sar, 1, 1, 1)                 ' and fit to nice-looking scale
  121. set_axe(1, 0, -1, 2)
  122. set_axe(2, 0, -1, 2)
  123. set_axe(4, 0, -1, 2)
  124. set_axe(8, 0, -1, 2)
  125. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  126. axes(YELLOW, LIGHTRED, 3, LIGHTGRAY, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  127.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  128. cross()                                      ' (0, 0)
  129. color(LIGHTGREEN) : style(SOLID_FILL, GREEN) : setline(3, 0)
  130. PLOT(rar, sar, 1, 1, shifts)                      ' Plot dataset
  131. for i = 1 to 20
  132.     shifts[i] = 0
  133. next
  134. setline(1, 1)
  135. ''''''''''''''''''''''''''''''''' Add small graph at the corner of big one
  136. '''''''''''''''''''''''''''''''''
  137. for i = 1 to 100
  138.     sar[i] = 100 * sar[i]
  139. next
  140.  
  141. setline(1, 0)
  142. grafclip(510, 35, 595, 90)                  ' Clip rectangle on screen
  143. style(SOLID_FILL, BLACK) : fill(1)
  144. rectangle(480, 20, 600, 120)
  145. calc_scale(rar, 0, 1, 0)                 ' x-scale, first, resize
  146. calc_scale(sar, 1, 1, 0)                 ' y-scale, first, no resize
  147. 'calc_scale(sar, 1, 0, 1)                 ' and fit to nice-looking scale
  148. set_axe(1, 1, -1, 0)
  149. set_axe(2, 0, -1, 0)
  150. 'set_axe(4, 1, -1, 0)
  151. 'set_axe(8, 0, -1, 0)
  152. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  153. axes(YELLOW, LIGHTRED, 3, LIGHTGRAY, 3, 1, 1 + 2) 'axes color, legends color, grid style,
  154.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  155. cross()                                      ' (0, 0)
  156. color(LIGHTGREEN) : style(SOLID_FILL, GREEN) : setline(3, 0)
  157. PLOT(rar, sar, 1, 1, shifts)                      ' Plot dataset
  158. for i = 1 to 20
  159.     shifts[i] = 0
  160. next
  161.  
  162. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  163. marker_size(16)
  164. zar[20];
  165. '                We set zar[] manually. The rules are:
  166. '                zar[4*i+1] keep ystart < 0;
  167. '         zar[4*i+2] keep ystart >= 0;
  168. '         zar[4*i+3] keep yend < 0;
  169. '         zar[4*i+4] keep yend >= 0;
  170. zar[1] = 0   : zar[2] = 0   : zar[3] = 0   : zar[4] = 10
  171. zar[5] = 0   : zar[6] = 0   : zar[7] = 0   : zar[8] = 24
  172. zar[9] = 0   : zar[10] = 0  : zar[11] = 0  : zar[12] = 15
  173. zar[13] = 0  : zar[14] = 0  : zar[15] = 0  : zar[16] = 10
  174. zar[17] = 0  : zar[18] = 0  : zar[19] = 0  : zar[20] = 5
  175.  
  176. aar[20];
  177.  
  178. aar[1] = 0    : aar[2] = 10   : aar[3] = 0    : aar[4] = 12
  179. aar[5] = 0    : aar[6] = 24   : aar[7] = 0    : aar[8] = 25
  180. aar[9] = 0    : aar[10] = 15  : aar[11] = 0   : aar[12] = 25
  181. aar[13] = 0   : aar[14] = 10  : aar[15] = 0   : aar[16] = 15
  182. aar[17] = 0   : aar[18] = 5   : aar[19] = 0   : aar[20] = 7
  183.  
  184. grafclip(20, 250, 240, 420)
  185. calc_scale(xar, 0, 1, 0)              ' x-scale, first, no resize
  186. calc_scale(zar, 1, 1, 0)              ' y-scale, first, resize
  187. calc_scale(aar, 1, 0, -1)               ' y-scale, not first, no resize
  188.                        ' That is not necessary to resize
  189. get_axes_dim(xmin, ymin, xmax, ymax)
  190. grafscale(xmin, ymin * 1.2, xmax, ymax * 1.2)
  191. calc_scale(xar, 0, 0, 1)
  192. set_axe(1, 0, -1, 5)
  193. set_axe(2, 0, -1, 2)
  194. set_axe(4, 0, -1, 5)
  195. set_axe(8, 0, -1, 2)
  196. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  197. axes(YELLOW, LIGHTRED, 0, LIGHTGRAY, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  198.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  199. color(LIGHTGRAY) : style(CROSS_FILL, GREEN)
  200. cross()                                   ' Stacked Graf twice
  201. setline(3, 0)
  202. PLOT(xar, zar, 6, 3)
  203. color(YELLOW) : style(LINE_FILL, LIGHTBLUE)
  204. PLOT(xar, aar, 6, 3)
  205. setline(1, 0)
  206. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  207. ' Now we combine manual and automatic approaches: first two arrays are
  208. ' composed manually, third is added with call to get_stacked()
  209. '                zar[4*i+1] keep ystart < 0;
  210. '         zar[4*i+2] keep ystart >= 0;
  211. '         zar[4*i+3] keep yend < 0;
  212. '         zar[4*i+4] keep yend >= 0;
  213.  
  214. bar[20];
  215. bar[1] = 0     : bar[2] = 0     : bar[3] = -10   : bar[4] = 10
  216. bar[5] = 0     : bar[6] = 0     : bar[7] = -20   : bar[8] = 10
  217. bar[9] = 0     : bar[10] = 0    : bar[11] = 0    : bar[12] = 10
  218. bar[13] = 0    : bar[14] = 0    : bar[15] = 0    : bar[16] = 20
  219. bar[17] = 0    : bar[18] = 0    : bar[19] = 0    : bar[20] = 2
  220.  
  221. car[20];
  222. car[1] = -10  : car[2] = 10   : car[3] = -15  : car[4] = 20
  223. car[5] = -20  : car[6] = 10   : car[7] = -25  : car[8] = 15
  224. car[9] = 0    : car[10] = 10  : car[11] = 0   : car[12] = 17
  225. car[13] = 0   : car[14] = 20  : car[15] = 0   : car[16] = 22
  226. car[17] = 0   : car[18] = 2   : car[19] = 0   : car[20] = 12
  227.  
  228. grafclip(310, 250, 550, 450)
  229. @last_graf()
  230.  
  231. rotate(45, 250, 250)
  232. style(SOLID_FILL, BLACK)
  233. rectangle(150, 150, 450, 400)
  234. grafclip(180, 180, 420, 370)
  235.  
  236. @last_graf()
  237.  
  238. END
  239.  
  240. @last_graf()
  241. color(LIGHTBLUE) : style(LINE_FILL, BLUE)
  242.  
  243. ear[20];
  244. for i = 1 to 20
  245.     ear[i] = car[i]
  246. next
  247.  
  248. calc_scale(xar, 0, 1, 0)                  ' x-scale, first, no resize
  249. get_stacked(xar, ear)                     ' ear scale is enought
  250. calc_scale(ear, 1, 0, -1)                 ' y-scale, first, resize
  251. get_axes_dim(xmin, ymin, xmax, ymax)
  252. grafscale(xmin, ymin * 1.2, xmax, ymax * 1.2)
  253. calc_scale(xar, 0, 0, 1)
  254. calc_scale(ear, 1, 0, 1)
  255. set_axe(1, 0, -1, 5)
  256. set_axe(2, 0, -1, 2)
  257. set_axe(4, 0, -1, 5)
  258. set_axe(8, 0, -1, 2)
  259. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  260. axes(YELLOW, LIGHTRED, 0, LIGHTGRAY, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  261.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  262. cross()
  263. color(LIGHTBLUE) : style(SLASH_FILL, BLUE) : setline(3, 0)
  264. PLOT(xar, bar, 6, 3)
  265.  
  266. color(LIGHTCYAN) : style(LINE_FILL, BROWN)
  267.  
  268. PLOT(xar, car, 6, 3)
  269.  
  270. color(LIGHTGREEN) : style(CROSS_FILL, LIGHTRED)
  271. PLOT(xar, ear, 6, 3)
  272. setline(1, 0)
  273.  
  274. return